Failed Conditions
Pull Request — master (#2)
by Yo
01:30
created

Logger.js ➔ ???   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2.351

Importance

Changes 9
Bugs 0 Features 0
Metric Value
cc 2
c 9
b 0
f 0
nc 2
nop 4
dl 0
loc 9
rs 9.6666
ccs 5
cts 9
cp 0.5556
crap 2.351
1
"use strict";
2
3
/**
4
 * @param {Object} winstonLogger
5
 * @param {string} level
6
 * @param {string} message
7
 * @param {Object} meta
8
 */
9 1
const wrapWinston = (winstonLogger, level, message, meta) => {
10
    const argList = [];
11
12 16
    argList.push(message);
13 16
    if (meta) {
14 16
        argList.push(meta);
15
    }
16 16
    winstonLogger[level].apply(winstonLogger, argList);
17
};
18
19
class Logger {
20
    /**
21
     *
22
     * @param {winston.Logger} logger
23
     */
24
    constructor(logger) {
25
        this.logger = logger;
26
    }
27
28
    /**
29
     * @public
30
     *
31
     * @param {string} message
32
     * @param {Object} meta
33
     */
34
    debug(message, meta = {}) {
35
        this.log('debug', message, meta);
36
    }
37
38
    /**
39
     * @public
40
     *
41
     * @param {string} message
42
     * @param {Object} meta
43
     */
44
    info(message, meta = {}) {
45
        this.log('info', message, meta);
46
    }
47
48
    /**
49
     * @public
50
     *
51
     * @param {string} message
52
     * @param {Object} meta
53
     */
54
    warning(message, meta = {}) {
55
        this.log('warn', message, meta);
56
    }
57
58
    /**
59
     * @public
60
     *
61
     * @param {string} message
62
     * @param {Object} meta
63
     */
64
    error(message, meta = {}) {
65
        this.log('error', message, meta);
66
    }
67
68
    /**
69
     * @protected
70
     * Could be overridden by child class
71
     *
72
     * @param {string} message
73
     * @param {Object} meta
74
     *
75
     * @returns {string}
76
     */
77
    normalizeMessage(message, meta = {}) {// eslint-disable-line no-unused-vars
1 ignored issue
show
Unused Code introduced by
The parameter meta is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
78
        return message;
79
    }
80
81
    /**
82
     * @protected
83
     * Could be overridden by child class
84
     *
85
     * @param {Object} meta
86
     *
87
     * @returns {Object}
88
     */
89
    normalizeMeta(meta = {}) {
90
        return meta;
91
    }
92
93
    /**
94
     * @protected
95
     *
96
     * @param {string} level
97
     * @param {string} message
98
     * @param {Object} meta
99
     */
100
    log(level, message, meta = {}) {
101
        meta = this.normalizeMeta(meta);
102
103 16
        wrapWinston(
104
            this.logger,
105
            level,
106
            this.normalizeMessage(message, meta),
107
            meta
108
        );
109
    }
110
}
111
112
module.exports = Logger;
113